﻿using System;
using System.ServiceModel.DomainServices.Client;
using AstekServis.Web.Data;
using System.Linq;
using AstekServis.Views;
using System.Windows.Controls;
using System.ComponentModel;
using System.ServiceModel.DomainServices.Client.ApplicationServices;
using System.Collections.Generic;
using System.Windows.Media;

namespace AstekServis
{
    public class Sozlesme
    {
        public int ID { get; set; }
        public DateTime BaslangicTarihi { get; set; }
        public DateTime BitisTarihi { get; set; }
        public string AracKodu { get; set; }
        public string Plaka { get; set; }
        public string FilmAdi { get; set; }
        public double Tutar { get; set; }
        public int AracID { get; set; }
        public int FilmID { get; set; }
    }

    public class PaketSatir
    {
        public string ParcaAdi { get; set; }
        public double Fiyati { get; set; }
        public string Doviz { get; set; }
        public byte DovizID { get; set; }
        public string HizmetKodu { get; set; }
    }

    public class Methods
    {
        AsTekDomainContext context = new AsTekDomainContext();

        private void garantiSuresi(int aracID, Label label, DateTime montajTarihi)
        {
            EntityQuery<Parametre> qry = context.GetParametrelerQuery().Where(x => x.Kodu == 1);
            LoadOperation<Parametre> operation = context.Load(qry);
            operation.Completed += (ss, oo) =>
            {
                LoadOperation<Parametre> op = ss as LoadOperation<Parametre>;
                if (op.HasError)
                {
                    System.Windows.MessageBox.Show(op.Error.ToString(), "Load Error",
                    System.Windows.MessageBoxButton.OK);
                    op.MarkErrorAsHandled();
                }
                else
                {
                    Parametre soz = op.Entities.FirstOrDefault();
                    if (soz != null)
                    {
                        sozlesmeBul(aracID, label, montajTarihi, soz.Deger);
                    }
                }
            };
        }

        public void garantiSozlemesiBul(int aracID, Label label, DateTime montajTarihi)
        {
            garantiSuresi(aracID, label, montajTarihi);
        }

        private void sozlesmeBul(int aracID, Label label, DateTime montajTarihi, int garantiSuresi)
        {
            DateTime tarih = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            //EntityQuery<GarantiSozlesmesi> qry = context.GetGarantiSozlesmeleriQuery().Where(x => x.AracID == aracID && x.BaslangicTarihi <= tarih && x.BitisTarihi >= tarih);
            EntityQuery<GarantiSozlesmesi> qry = context.GetGarantiSozlesmeleriQuery().Where(x => x.AracID == aracID);
            LoadOperation<GarantiSozlesmesi> operation = context.Load(qry);
            operation.Completed += (ss, oo) =>
            {
                LoadOperation<GarantiSozlesmesi> op = ss as LoadOperation<GarantiSozlesmesi>;
                if (op.HasError)
                {
                    System.Windows.MessageBox.Show(op.Error.ToString(), "Load Error",
                    System.Windows.MessageBoxButton.OK);
                    op.MarkErrorAsHandled();
                }
                else
                {
                    bool gecerliSozlesmeVar = false;
                    List<GarantiSozlesmesi> soz = op.Entities.ToList();
                    foreach (var item in soz)
                    {
                        if (item.BaslangicTarihi <= tarih && item.BitisTarihi >= tarih)
                        {
                            gecerliSozlesmeVar = true;
                            break;
                        }
                    }


                    frmUyari frm = new frmUyari();
                    string message = "";
                    if (gecerliSozlesmeVar)
                    {
                        frm.Renk = Colors.Red;
                        message = "EK GARANTİ SÖZLEŞMESİ İ DEVAM ETMEKTEDİR";
                    }
                    else
                    {
                        if (DateTime.Now <= montajTarihi.AddYears(garantiSuresi))
                        {
                            frm.Renk = Colors.Blue;
                            message = "GARANTİ SÜRESİ DEVAM ETMEKTEDİR";
                        }
                        else
                        {
                            frm.Renk = Colors.Red;
                            message = "ARAÇ GARANTİ SÜRESİ SONA ERMİŞTİR";
                        }

                        if (soz.Count > 0)
                        {
                            frm.Renk = Colors.Blue;
                            message = "GARANTİ SÖZLEŞMESİ YAPILMALI";
                        }
                    }

                    if (label != null)
                    {
                        label.Content = message;
                        label.Foreground = new SolidColorBrush(frm.Renk);
                    }

                    frm.Message = message;
                    frm.Show();
                }
            };
        }
    }
}
